/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.afcepf.projet2.metiers.donnees.assembleur.catalogue;


import fr.afcepf.projet2.metiers.donnees.dto.catalogue.CategorieDto;
import fr.afcepf.projet2.metiers.donnees.dto.catalogue.ProduitDto;
import fr.afcepf.projet2.metiers.donnees.entites.catalogue.Produit;
import fr.afcepf.projet2.metiers.donnees.entites.catalogue.Categorie;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe permettant l'assemblage des donnes DTO <-> ENTITES Produit Produit
 *
 * @author Sylvain
 */
public class ProduitAssembleur {

    /**
     * Permet la création d'un DTO pour utilisation service/managedBean
     *
     * @param produit Entity de type Produit
     * @return dto de type Produit
     */
    public static ProduitDto creationProduitDto(Produit produit) {
        ProduitDto produitDto = new ProduitDto();
        produitDto.setIdProduit(produit.getIdProduit());
        produitDto.setDescription(produit.getDescription());
        produitDto.setPhoto(produit.getPhoto());
        produitDto.setPrix(produit.getPrix());
        produitDto.setStock(produit.getStock());
        produitDto.setTitreProduit(produit.getTitreProduit());
        if (produit.getCategorie() != null) {
            CategorieDto categorie =
                    CategorieAssembleur
                    .creationCategorieDto(
                    produit.getCategorie());
            produitDto.setCategorie(categorie);
        }
        return produitDto;
    }

    /**
     * Création de la liste Produits
     *
     * @param listeProduits liste d'entités de type produits
     * @return Liste de produits
     */
    public static List<ProduitDto> creationListeProduitDto(List<Produit> listeProduits) {
        List<ProduitDto> listProduits = new ArrayList<>();
        for (Produit produit : listeProduits) {
            ProduitDto produitDto = creationProduitDto(produit);
            listProduits.add(produitDto);
        }
        return listProduits;
    }

    /**
     * Permet la création d'un Bean pour utilisation Dao
     *
     * @param produitDto DTO de type Produit
     * @return produit
     */
    public static Produit updateProduit(ProduitDto produitDto) {
        Produit produit = new Produit();
        produit.setIdProduit(produitDto.getIdProduit());
        produit.setDescription(produitDto.getDescription());
        produit.setPhoto(produitDto.getPhoto());
        produit.setPrix(produitDto.getPrix());
        produit.setStock(produitDto.getStock());
        produit.setTitreProduit(produitDto.getTitreProduit());
        if (produit.getCategorie() != null) {
            Categorie categorie =
                    CategorieAssembleur
                    .updateCategorie(
                    produitDto.getCategorie());
            produit.setCategorie(categorie);
        }
        return produit;
    }

    /**
     * Création de la liste Produit
     *
     * @param categories liste d'entités de type produits
     * @return Liste de produits
     */
    public static List<Produit> updateListeProduits(List<ProduitDto> listeProduitsDto) {
        List<Produit> listeProduit = new ArrayList<>();
        for (ProduitDto produitDto : listeProduitsDto) {
            Produit produit = updateProduit(produitDto);
            listeProduit.add(produit);
        }
        return listeProduit;
    }
}
